fix(mobile): preserve grouped project workspaces - #4642
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ApprovabilityVerdict: Needs human review This PR introduces a new settings screen for project grouping and refactors core grouping logic across web and mobile platforms. The changes add new user-facing functionality (expandable workspace groups, 3-way grouping mode selection) beyond what the 'fix' title suggests, warranting careful review of the behavioral changes. You can customize Macroscope's approvability policy. Learn more. |
…oject-grouping # Conflicts: # apps/mobile/src/features/threads/new-task-flow-provider.tsx
e6da0ca to
fd21fbc
Compare
…g' into agent/fix-mobile-project-grouping # Conflicts: # apps/mobile/src/features/settings/SettingsProjectGroupingRouteScreen.tsx
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 68550f9. Configure here.
## What's Changed * fix(mcp): unblock Kimi models in OpenCode with preview tools by @hwanseoc in pingdotgg/t3code#5128 * fix(web): clear main branch lint warnings by @t3dotgg in pingdotgg/t3code#5384 * fix(mobile): preserve grouped project workspaces by @shivamhwp in pingdotgg/t3code#4642 * fix(mobile): prevent Android thread search crash by @shivamhwp in pingdotgg/t3code#5386 * fix(web): truncate long project switcher names by @FllipEis in pingdotgg/t3code#5348 * fix(mobile): avoid double dividers between thread sections by @shivamhwp in pingdotgg/t3code#5391 * fix(web): keep the composer command menu anchored to the composer by @StiensWout in pingdotgg/t3code#5336 * fix(web): restore terminal link hover styles by @StiensWout in pingdotgg/t3code#5382 * fix(ci): isolate releases from shared API rate limits by @t3dotgg in pingdotgg/t3code#5394 **Full Changelog**: pingdotgg/t3code@v0.0.32-nightly.20260805.1002...v0.0.32-nightly.20260805.1005 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.32-nightly.20260805.1005
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: T3 Code Test <t3code-test@example.com>
Co-authored-by: T3 Code Test <t3code-test@example.com> (cherry picked from commit 47dfc65)

What
Why
Mobile grouped projects only by repository identity and then selected the first project in that group. With
t3code,t3code-2, andt3code-3pointing at the same upstream, only one activity-dependent row appeared. Grouping should organize projects without discarding their physical workspace targets.Impact
Screenshots
Captured on the connected A142 Android device against the current PR UI. The repository group contains five selectable workspaces.
Checks
vp test run packages/client-runtime/src/state/projectGrouping.test.ts apps/web/src/environmentGrouping.test.ts apps/mobile/src/features/home/homeThreadList.test.ts apps/mobile/src/features/home/home-list-options.test.ts apps/mobile/src/state/project-grouping.test.ts apps/mobile/src/features/threads/new-task-project-selection.test.ts— 46 tests passedvp run --filter @t3tools/client-runtime typecheckvp run --filter @t3tools/web typecheckvp run --filter @t3tools/mobile typecheckgit diff --checkKeep separatepersisted across a route reloadNote
Preserve grouped project workspaces in mobile new task flow and settings
buildProjectGroupsinclient-runtimeas a shared grouping mechanism, replacing per-client logic in both mobile and web sidebar grouping.SettingsProjectGroupingRouteScreen) supportingrepository,repository_path, andseparatemodes.projectGroupingModealongside the legacy boolean, with a resolver that prefers the new field and falls back to the old one.projectScopesfrom shared home scope logic, supporting expandable logical groups and auto-selecting when only one physical project exists.buildProjectGroupsrather than the deletedrepositoryGroupslogic, which may change group labels for some workspace configurations.Macroscope summarized db0db83.
Note
Medium Risk
Touches shared grouping logic used by web and mobile plus navigation/task-creation flows; behavior and labels can shift for some workspace layouts, though coverage is strong and legacy prefs are migrated.
Overview
Fixes mobile treating same-repo clones as a single selectable project by moving deduplication and logical grouping into shared
buildProjectGroupsin client-runtime, then wiring Home, sidebar, and New Task through that path (web sidebar grouping is refactored onto the same core).Mobile settings replace the on/off Project Grouping switch with a Project Grouping screen offering
repository,repository_path, andseparate, persisted asprojectGroupingModewith a dual-write to the legacyprojectGroupingEnabledboolean for OTA rollback. New Task listsprojectScopeswith expandable groups when a logical group has multiple workspaces; draft auto-select runs only when exactly one physical project exists (resolveDraftProjectSelection). Singleton group labels now use the physical project title rather than repository display name.Removes
repositoryGroups/groupProjectsByRepositoryfrom mobile. Minor Android header spacing on settings sub-screens.Reviewed by Cursor Bugbot for commit db0db83. Bugbot is set up for automated code reviews on this repo. Configure here.